package uni.edu.pe.analisisSentimental.dao.impl;

import java.util.HashMap;
import java.util.Map;

import javax.sql.DataSource;

import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
import org.springframework.stereotype.Repository;

import uni.edu.pe.analisisSentimental.dao.TweetManagerDAO;
import uni.edu.pe.analisisSentimental.domain.TweetBean;

@Repository
public class TweetManagerDAOImpl implements TweetManagerDAO{

	private static final Log logger = LogFactory.getLog(TweetManagerDAOImpl.class);
	private static final boolean isDebugEnabled = logger.isDebugEnabled();

	// SimpleJdbcTemplate-style...
	private SimpleJdbcTemplate simpleJdbcTemplate;

	@Autowired
	public void setDataSource(DataSource dataSource) {
	    this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource);
	}
	
	public void insertTweet(TweetBean tweetBean) {
		logger.debug("<==== Inicio Method insertTweet ====>");	
		if(isDebugEnabled)
			logger.debug("TweetBean: "+ToStringBuilder.reflectionToString(tweetBean));
		String sql =  "INSERT INTO TWEET (ID, QUERY, USUARIO_ORIGEN, USUARIO_DESTINO, MENSAJE_ORIGINAL, MENSAJE_PROCESADO, FECHA_CREACION, POLARIDAD_ASUMIDA, LENGUAJE_TWEET)"+
	    "VALUES(:id, :query, :usuario_origen, :usuario_destino, :mensaje_original, :mensaje_procesado,  :fecha_creacion, :polaridad_asumida, :lenguaje_tweet)";
		Map<String, Object> parameters = new HashMap<String, Object>();
		parameters.put("id", tweetBean.getId());
		parameters.put("query", tweetBean.getQuery());
		parameters.put("usuario_origen", tweetBean.getUsuario_origen());
		parameters.put("usuario_destino", tweetBean.getUsuario_destino());
		parameters.put("mensaje_original", tweetBean.getMensaje_original());
		parameters.put("mensaje_procesado", tweetBean.getMensaje_procesado());
		parameters.put("fecha_creacion", tweetBean.getFecha_creacion());
		parameters.put("polaridad_asumida", tweetBean.getPolaridad_asumida());
		parameters.put("lenguaje_tweet", tweetBean.getLenguaje_tweet());
		simpleJdbcTemplate.update(sql,parameters);
	    
	}

	public int obtenerContadorEntradasDelTweetEnBD(Long idTweet) {
		logger.debug("<==== Inicio Method insertTweet ====>");
		String sql = "SELECT COUNT(*) FROM TWEET WHERE ID = :id";
		Map<String, Object> parameters = new HashMap<String, Object>();
		parameters.put("id", idTweet);
	    return simpleJdbcTemplate.queryForInt(sql, parameters);
	}

}
